#更改快捷键前缀
unbind C-Z
unbind C-b
set -g prefix M-w

# 设置为vi编辑模式
setw -g mode-keys vi
# 支持鼠标选取文本等,鼠标拖动调整面板的大小,鼠标选中并切换面板,鼠标选中并切换窗口
set-option -g mouse on
# 关闭默认窗口标题
set -g set-titles off

# 功能键、Alt+快捷键都以""即<Esc>开头，默认输入<Esc>时会等待以确定是否还有其他按键与其组成功能键，而导致延迟
# 降低此等待时间可有效减少<Esc>按键对延迟，但若是通过网络传输且<Esc>是功能键的一部分，则可能应网络延迟而导致功能键失效
# 故50刚刚好，且vim也需要设置一下
set-option -g escape-time 50

# 支持真色与xterm按键映射
set -g default-terminal "xterm-256color"
set -g xterm-keys on

# 支持响铃
# set -g monitor-bell on
# set -g bell-action any
# set-hook -g alert-bell 'run-shell "/bin/gst-play-1.0 /usr/share/sounds/freedesktop/stereo/bell.oga"'

#快捷键自定义
unbind-key M-left
unbind-key M-right
unbind-key M-down
unbind-key M-up
bind up selectp -U
bind down selectp -D
bind left selectp -L
bind right selectp -R

unbind '"'
bind s splitw -v -c '#{pane_current_path}' # 水平切割pane

unbind '%'
bind v splitw -h -c '#{pane_current_path}' # 竖直切割pane

unbind 'r'
bind R source-file ~/.tmux.conf \; display-message "Config reloaded.." #重载配置

unbind 'b'
bind b previous-window # 跳转前一个window

unbind 't'
bind t set-option status # 切换statusline

unbind-key C-Right
unbind-key C-Left
unbind-key C-up
unbind-key C-down
bind  + resizep -U 10 # 绑定为往↑调整面板边缘10个单元格
bind  - resizep -D 10 # 绑定为往↓调整面板边缘10个单元格
bind  < resizep -L 10 # 绑定为往←调整面板边缘10个单元格
bind  > resizep -R 10 # 绑定为往→调整面板边缘10个单元格
bind h new-window  htop
bind i new-window  "sudo iotop"
bind r new-window  ranger
# bind n new-window  ncdu
bind m new-window  "sleep 1 ; cmatrix"
# bind c new-window  "sleep 1 ; cmatrix -r"
bind f new-window  'sed -n "/export FZF_DEFAULT_COMMAND=/,/fi$/p" ~/.zshrc > /tmp/fzf-ranger && bash /tmp/fzf-ranger && : > /tmp/fzf-ranger'
# bind f new-window  "FZF_DEFAULT_COMMAND='ag --hidden --ignore .git -l -g \"\"' fzf "

#系统剪切板，需要下载xclip，不知道为啥后来没法用了
#bind C-V run " tmux save-buffer - | xclip -i -sel clipboard"

#插件：保存会话
run-shell /usr/share/tmux-resurrect-git/resurrect.tmux
# set -g @resurrect-save 'S' # 修改保存指令为S
# set -g @resurrect-restore 'R' #修改恢复指令为R
set -g @resurrect-dir '$HOME/.cache/tmux-resurrect' # 修改会话数据的保持路径，此处不能使用除了$HOME, $HOSTNAME, ~之外的环境变量
setw -g aggressive-resize on
set-option -gw xterm-keys on
setw -g automatic-rename off
setw -g allow-rename off

set -g default-terminal "tmux-256color"
set-option -ga terminal-overrides ",xterm-256color:Tc"
# set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'
set -as terminal-overrides '*:Smulx=\E[4::%p1%dm,*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'
set -g base-index 1 # 设置窗口的起始下标为1
set -g pane-base-index 1 # 设置面板的起始下标为1

set -g status-interval 1 # 状态栏刷新时间
set -g status-justify left # 状态栏列表左对齐
setw -g monitor-activity on # 非当前窗口有内容更新时在状态栏通知
set -g visual-activity on

set -g status-bg black # 设置状态栏背景黑色
set -g status-fg yellow # 设置状态栏前景黄色
set -g status-style "bg=black, fg=white" # 状态栏前景背景色

set -g status-left "#[fg=cyan] ☯ #S \ue0b2" # 状态栏左侧内容
set -g status-right '#[fg=cyan]Continuum status: #{continuum_status}' # 状态栏右侧内容
set -g status-left-length 300 # 状态栏左边长度300
set -g status-right-length 500 # 状态栏右边长度500

set -wg window-status-format " #I #W " # 状态栏窗口名称格式
set -wg window-status-current-format " #I:#W#F #[fg=green]#[bg=black]\ue0b0" # 状态栏当前窗口名称格式(#I：序号，#w：窗口名称，#F：间隔符)
set -wg window-status-separator "" # 状态栏窗口名称之间的间隔
set -wg window-status-current-style "fg=white, bg=green" # 状态栏当前窗口名称的样式
set -wg window-status-last-style "fg=blue" # 状态栏最后一个窗口名称的样式

set -g message-style "bg=#202529, fg=#91A8BA" # 指定消息通知的前景、后景色

set-option -g status off

